package org.groupg.practice.guava;

import com.google.common.math.IntMath;
import com.google.common.math.Stats;
import java.math.RoundingMode;

public class GuavaMathDemo {
    public static void main(String[] args) {
        // 1. 阶乘计算（仅限小整数）
        int factorial = IntMath.factorial(5);
        System.out.println("5! = " + factorial); // 输出: 120

        // 2. 二项式系数（组合数）
        int binomial = IntMath.binomial(5, 2);
        System.out.println("C(5,2) = " + binomial); // 输出: 10

        // 3. 最大公约数（GCD）
        int gcd = IntMath.gcd(12, 18);
        System.out.println("GCD(12,18) = " + gcd); // 输出: 6

        // 4. 取模运算（避免负数结果）
        int mod = IntMath.mod(7, 3);
        System.out.println("7 mod 3 = " + mod); // 输出: 1

        // 5. 平方根（向下取整）
        int sqrt = IntMath.sqrt(10, RoundingMode.DOWN);
        System.out.println("sqrt(10) ≈ " + sqrt); // 输出: 3

        // 6. 统计计算（均值、标准差）
        Stats stats = Stats.of(1.0, 2.0, 3.0, 4.0, 5.0);
        System.out.println("均值: " + stats.mean());   // 输出: 3.0
        System.out.println("标准差: " + stats.populationStandardDeviation()); // 输出: 1.4142...
    }
}